package io.xccit.race.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import io.xccit.common.core.domain.BaseEntity;

/**
 * 竞赛报名信息对象 race_competition_signup
 * 
 * @author ywx
 * @date 2025-10-10
 */
public class RaceCompetitionSignup extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 报名ID */
    private Long id;

    /** 竞赛ID */
    private Long competitionId;

    /** 用户ID */
    private Long userId;

    /** 组名（团队赛必填） */
    private String groupName;

    /** 参赛者姓名 */
    private String participantName;

    /** 联系电话 */
    private String contactPhone;

    /** 联系邮箱 */
    private String contactEmail;

    /** 所在学校 */
    private String schoolName;

    /** 所在院系 */
    private String department;

    /** 专业 */
    private String major;

    /** 学号 */
    private String studentId;

    /** 学生证图片URL */
    private String studentCardUrl;

    /** 身份证号 */
    private String idCard;

    /** 身份证图片URL */
    private String idCardUrl;

    /** 报名类型（1-个人赛，2-团队赛） */
    private Integer signupType;

    /** 是否队长（0-否，1-是） */
    private Integer teamLeader;

    /** 团队成员数量 */
    private Integer teamMemberCount;

    /** 报名状态（0-待审核，1-已通过，2-已拒绝） */
    private Integer status;

    /** 审核备注 */
    private String auditRemark;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date auditTime;

    /** 审核人 */
    private String auditBy;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    // 队长信息字段（用于前端传递，不存储到数据库）
    /** 队长姓名 */
    private String leaderName;

    /** 队长电话 */
    private String leaderPhone;

    /** 队长邮箱 */
    private String leaderEmail;

    /** 队长学校 */
    private String leaderSchool;

    /** 队长院系 */
    private String leaderDepartment;

    /** 队长专业 */
    private String leaderMajor;

    /** 队长学号 */
    private String leaderStudentId;

    /** 队长身份证号 */
    private String leaderIdCard;

    /** 队长学生证图片URL */
    private String leaderStudentCardUrl;

    /** 队长身份证图片URL */
    private String leaderIdCardUrl;

    // 团队成员列表（用于前端传递，不存储到数据库）
    /** 团队成员列表 */
    private java.util.List<RaceCompetitionTeamMember> teamMembers;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setCompetitionId(Long competitionId) 
    {
        this.competitionId = competitionId;
    }

    public Long getCompetitionId() 
    {
        return competitionId;
    }
    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }
    public void setGroupName(String groupName) 
    {
        this.groupName = groupName;
    }

    public String getGroupName() 
    {
        return groupName;
    }
    public void setParticipantName(String participantName) 
    {
        this.participantName = participantName;
    }

    public String getParticipantName() 
    {
        return participantName;
    }
    public void setContactPhone(String contactPhone) 
    {
        this.contactPhone = contactPhone;
    }

    public String getContactPhone() 
    {
        return contactPhone;
    }
    public void setContactEmail(String contactEmail) 
    {
        this.contactEmail = contactEmail;
    }

    public String getContactEmail() 
    {
        return contactEmail;
    }
    public void setSchoolName(String schoolName) 
    {
        this.schoolName = schoolName;
    }

    public String getSchoolName() 
    {
        return schoolName;
    }
    public void setDepartment(String department) 
    {
        this.department = department;
    }

    public String getDepartment() 
    {
        return department;
    }
    public void setMajor(String major) 
    {
        this.major = major;
    }

    public String getMajor() 
    {
        return major;
    }
    public void setStudentId(String studentId) 
    {
        this.studentId = studentId;
    }

    public String getStudentId() 
    {
        return studentId;
    }
    public void setStudentCardUrl(String studentCardUrl) 
    {
        this.studentCardUrl = studentCardUrl;
    }

    public String getStudentCardUrl() 
    {
        return studentCardUrl;
    }
    public void setIdCard(String idCard) 
    {
        this.idCard = idCard;
    }

    public String getIdCard() 
    {
        return idCard;
    }
    public void setIdCardUrl(String idCardUrl) 
    {
        this.idCardUrl = idCardUrl;
    }

    public String getIdCardUrl() 
    {
        return idCardUrl;
    }
    public void setSignupType(Integer signupType) 
    {
        this.signupType = signupType;
    }

    public Integer getSignupType() 
    {
        return signupType;
    }
    public void setTeamLeader(Integer teamLeader) 
    {
        this.teamLeader = teamLeader;
    }

    public Integer getTeamLeader() 
    {
        return teamLeader;
    }
    public void setTeamMemberCount(Integer teamMemberCount) 
    {
        this.teamMemberCount = teamMemberCount;
    }

    public Integer getTeamMemberCount() 
    {
        return teamMemberCount;
    }
    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }
    public void setAuditRemark(String auditRemark) 
    {
        this.auditRemark = auditRemark;
    }

    public String getAuditRemark() 
    {
        return auditRemark;
    }
    public void setAuditTime(Date auditTime) 
    {
        this.auditTime = auditTime;
    }

    public Date getAuditTime() 
    {
        return auditTime;
    }
    public void setAuditBy(String auditBy) 
    {
        this.auditBy = auditBy;
    }

    public String getAuditBy() 
    {
        return auditBy;
    }
    public void setDelFlag(String delFlag) 
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag() 
    {
        return delFlag;
    }

    public String getLeaderName() 
    {
        return leaderName;
    }

    public void setLeaderName(String leaderName) 
    {
        this.leaderName = leaderName;
    }

    public String getLeaderPhone() 
    {
        return leaderPhone;
    }

    public void setLeaderPhone(String leaderPhone) 
    {
        this.leaderPhone = leaderPhone;
    }

    public String getLeaderEmail() 
    {
        return leaderEmail;
    }

    public void setLeaderEmail(String leaderEmail) 
    {
        this.leaderEmail = leaderEmail;
    }

    public String getLeaderSchool() 
    {
        return leaderSchool;
    }

    public void setLeaderSchool(String leaderSchool) 
    {
        this.leaderSchool = leaderSchool;
    }

    public String getLeaderDepartment() 
    {
        return leaderDepartment;
    }

    public void setLeaderDepartment(String leaderDepartment) 
    {
        this.leaderDepartment = leaderDepartment;
    }

    public String getLeaderMajor() 
    {
        return leaderMajor;
    }

    public void setLeaderMajor(String leaderMajor) 
    {
        this.leaderMajor = leaderMajor;
    }

    public String getLeaderStudentId() 
    {
        return leaderStudentId;
    }

    public void setLeaderStudentId(String leaderStudentId) 
    {
        this.leaderStudentId = leaderStudentId;
    }

    public String getLeaderIdCard() 
    {
        return leaderIdCard;
    }

    public void setLeaderIdCard(String leaderIdCard) 
    {
        this.leaderIdCard = leaderIdCard;
    }

    public String getLeaderStudentCardUrl() 
    {
        return leaderStudentCardUrl;
    }

    public void setLeaderStudentCardUrl(String leaderStudentCardUrl) 
    {
        this.leaderStudentCardUrl = leaderStudentCardUrl;
    }

    public String getLeaderIdCardUrl() 
    {
        return leaderIdCardUrl;
    }

    public void setLeaderIdCardUrl(String leaderIdCardUrl) 
    {
        this.leaderIdCardUrl = leaderIdCardUrl;
    }

    public java.util.List<RaceCompetitionTeamMember> getTeamMembers() 
    {
        return teamMembers;
    }

    public void setTeamMembers(java.util.List<RaceCompetitionTeamMember> teamMembers) 
    {
        this.teamMembers = teamMembers;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("competitionId", getCompetitionId())
            .append("groupName", getGroupName())
            .append("participantName", getParticipantName())
            .append("contactPhone", getContactPhone())
            .append("contactEmail", getContactEmail())
            .append("schoolName", getSchoolName())
            .append("department", getDepartment())
            .append("major", getMajor())
            .append("studentId", getStudentId())
            .append("studentCardUrl", getStudentCardUrl())
            .append("idCard", getIdCard())
            .append("idCardUrl", getIdCardUrl())
            .append("signupType", getSignupType())
            .append("teamLeader", getTeamLeader())
            .append("teamMemberCount", getTeamMemberCount())
            .append("status", getStatus())
            .append("auditRemark", getAuditRemark())
            .append("auditTime", getAuditTime())
            .append("auditBy", getAuditBy())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
